home *** CD-ROM | disk | FTP | other *** search
- # This function is required by _dpkg() and _dpkg-reconfigure()
- have dpkg && {
- have grep-status && {
- _comp_dpkg_installed_packages()
- {
- grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package
- }
- } || {
- _comp_dpkg_installed_packages()
- {
- command grep -A 1 "Package: $1" /var/lib/dpkg/status | \
- command grep -B 1 -Ee "ok installed|half-installed|unpacked| \
- half-configured|config-files" \
- -Ee "^Essential: yes" | \
- command grep "Package: $1" | cut -d\ -f2
- }
- }
-
- # Debian dpkg(8) completion
- #
- _dpkg()
- {
- local cur prev i
-
- COMPREPLY=()
- _get_comp_words_by_ref cur prev
- i=$COMP_CWORD
-
- _expand || return 0
-
- _split_longopt
-
- # find the last option flag
- if [[ $cur != -* ]]; then
- while [[ $prev != -* && $i != 1 ]]; do
- i=$((i-1))
- prev=${COMP_WORDS[i-1]}
- done
- fi
-
- case $prev in
- -c|-i|-A|-I|-f|-e|-x|-X|-W|--install|--unpack|--record-avail| \
- --contents|--info|--fsys-tarfile|--field|--control|--extract| \
- --show)
- _filedir '?(u)deb'
- return 0
- ;;
- -b|--build)
- _filedir -d
- return 0
- ;;
- -s|-p|-l|--status|--print-avail|--list)
- COMPREPLY=( $( apt-cache pkgnames "$cur" 2>/dev/null ) )
- return 0
- ;;
- -S|--search)
- _filedir
- return 0
- ;;
- -r|-L|-P|--remove|--purge|--listfiles)
- COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) )
- return 0
- ;;
- *)
- COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \
- --configure -r --remove -P --purge --get-selections \
- --set-selections --update-avail --merge-avail \
- --clear-avail --command-fd --forget-old-unavail -s \
- --status -p --print-avail -L --listfiles -l --list \
- -S --search -C --audit --print-architecture \
- --print-gnu-build-architecture \
- --print-installation-architecture \
- --compare-versions --help --version --force-help \
- --force-all --force-auto-select --force-downgrade \
- --force-configure-any --force-hold --force-bad-path \
- --force-not-root --force-overwrite \
- --force-overwrite-diverted --force-bad-verify \
- --force-depends-version --force-depends \
- --force-confnew --force-confold --force-confdef \
- --force-confmiss --force-conflicts --force-architecture\
- --force-overwrite-dir --force-remove-reinstreq \
- --force-remove-essential -Dh \
- --debug=help --licence --admindir --root --instdir \
- -O --selected-only -E --skip-same-version \
- -G --refuse-downgrade -B --auto-deconfigure \
- --no-debsig --no-act -D --debug --status-fd \
- -b --build -I --info -f --field -c --contents \
- -x --extract -X --vextract --fsys-tarfile -e --control \
- --ignore-depends --abort-after' -- "$cur" ) )
- ;;
- esac
-
-
- }
- complete -F _dpkg -o filenames dpkg dpkg-deb
- }
-
- # Debian GNU dpkg-reconfigure(8) completion
- #
- have dpkg-reconfigure &&
- _dpkg_reconfigure()
- {
- local cur prev opt
-
- COMPREPLY=()
- _get_comp_words_by_ref cur prev
-
- case $prev in
- -f|--frontend)
- opt=( $( printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/* ) )
- opt=( ${opt[@]##*/} )
- opt=( ${opt[@]%.pm} )
- COMPREPLY=( $( compgen -W '${opt[@]}' -- "$cur" ) )
- return 0
- ;;
- -p|--priority)
- COMPREPLY=( $( compgen -W 'low medium high critical' -- "$cur" ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $(compgen -W '--frontend --priority --all --unseen-only \
- --help --showold --force --terse' -- "$cur" ) )
- else
- COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) )
- fi
- } &&
- complete -F _dpkg_reconfigure -o default dpkg-reconfigure
-
- # Debian dpkg-source completion
- #
- have dpkg-source &&
- _dpkg_source()
- {
- local cur prev options work i action packopts unpackopts fields
-
- packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sr -ss -sA -sK -sP \
- -sU -sR"
- unpackopts="-sp -sn -su"
- options="-x -b $packopts $unpackopts"
- fields="Format Source Version Binary Maintainer Uploader Architecture \
- Standards-Version Build-Depends Files"
-
- COMPREPLY=()
- _get_comp_words_by_ref cur prev
-
- action="options"
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[$i]} == "-x" ]]; then
- action=unpack
- elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then
- action=pack
- elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then
- action=help
- fi
- done
-
- case $action in
- unpack)
- case $prev in
- -x)
- _filedir -d
- _filedir 'dsc'
- return 0
- ;;
- *)
- COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) )
- _filedir -d
- _filedir
- return 0
- ;;
- esac
- return 0
- ;;
- pack)
- case $prev in
- -b)
- _filedir -d
- return 0
- ;;
- -c|-l|-T|-i|-I)
- # -c: get controlfile
- # -l: get per-version info from this file
- # -T: read variables here, not debian/substvars
- # -i: <regexp> filter out files to ignore diffs of.
- # -I: filter out files when building tarballs.
- # return directory names and file names
- _filedir -d
- _filedir
- return 0
- ;;
- -F)
- # -F: force change log format
- COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) )
- return 0
- ;;
- -V|-D)
- # -V: set a substitution variable
- # we don't know anything about possible variables or values
- # so we don't try to suggest any completion.
- COMPREPLY=()
- return 0
- ;;
- -D)
- # -D: override or add a .dsc field and value
- # if $cur doesn't contain a = yet, suggest variable names
- if [[ "$cur" == *=* ]]; then
- # $cur contains a "="
- COMPREPLY=()
- return 0
- else
- COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
- return 0
- fi
- ;;
- -U)
- # -U: remove a field
- # Suggest possible fieldnames
- COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
- return 0
- ;;
- *)
- COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) )
- return 0
- ;;
- esac
- return 0
- ;;
- *)
- COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
- return 0
- ;;
- esac
- } &&
- complete -F _dpkg_source dpkg-source
-
- # Local variables:
- # mode: shell-script
- # sh-basic-offset: 4
- # sh-indent-comment: t
- # indent-tabs-mode: nil
- # End:
- # ex: ts=4 sw=4 et filetype=sh
-